講了快10天的程式語言,不知道大家對Mql5的應用有沒有更熟悉了一點呢,今天是連假的最後一天,就來講點輕鬆的吧。
指標(Indicator)通常指的是技術指標,是一種用於分析金融市場價格和交易活動的工具。這些指標是數學公式或算法的應用,通常基於過去的市場數據,以提供交易者有關市場趨勢、波動性、超買/超賣情況等方面的信息。
通過計算一段時間內的價格平均值,平滑價格數據以識別趨勢。在MQL5中,使用iMA函數可以計算各種類型的移動平均線,如簡單移動平均線(SMA)或指數移動平均線(EMA)。它們用於識別市場趨勢,當價格位於平均線上方時,可能表示上升趨勢,下方表示下降趨勢,有助於交易者制定入場和出場策略。
double maArray[];
int maPeriod = 50; // 50期間的SMA
ArraySetAsSeries(maArray, true); // 將數組設置為倒序
ArrayResize(maArray, Bars); // 設置數組大小為歷史數據的Bars
for(int i = 0; i < Bars; i++)
{
maArray[i] = iMA(Symbol(), 0, maPeriod, 0, MODE_SMA, PRICE_CLOSE, i);
}
用於評估金融市場的超買和超賣情況。RSI的值在0到100之間,通常70以上表示市場可能超買,可能發生價格下跌;30以下表示市場可能超賣,可能發生價格上漲。RSI可用於識別價格反轉點,提供交易者有關市場強度和趨勢的信息。
double rsiArray[];
int rsiPeriod = 14; // RSI計算的期間
ArraySetAsSeries(rsiArray, true); // 將數組設置為倒序
ArrayResize(rsiArray, Bars); // 設置數組大小為歷史數據的Bars
for(int i = 0; i < Bars; i++)
{
rsiArray[i] = iRSI(Symbol(), 0, rsiPeriod, PRICE_CLOSE, i);
}
由上、中和下三條帶狀線構成,基於價格波動性而變動。中間帶是簡單移動平均線,上下兩帶則是基於價格的標準差計算的。布林帶用於測量價格波動,並識別市場的支撐和阻力水平,有助於預測價格走勢。
double upperBand[];
double middleBand[];
double lowerBand[];
int period = 20; // 期間
double deviation = 2.0; // 標準差倍數
ArraySetAsSeries(upperBand, true);
ArraySetAsSeries(middleBand, true);
ArraySetAsSeries(lowerBand, true);
ArrayResize(upperBand, Bars);
ArrayResize(middleBand, Bars);
ArrayResize(lowerBand, Bars);
for(int i = 0; i < Bars; i++)
{
middleBand[i] = iMA(Symbol(), 0, period, 0, MODE_SMA, PRICE_CLOSE, i);
double stdDev = iStdDev(Symbol(), 0, period, 0, MODE_SMA, PRICE_CLOSE, i);
upperBand[i] = middleBand[i] + deviation * stdDev;
lowerBand[i] = middleBand[i] - deviation * stdDev;
}
用於識別市場的趨勢變化和交叉點。它由兩條移動平均線組成,快速(短期)和慢速(長期),以及一條稱為信號線的平均值。MACD的交叉和變化可用於生成交易信號,幫助交易者預測價格走勢的變化。
double macdLine[];
double signalLine[];
double histogram[];
int fastEMA = 12; // 快速EMA的期間
int slowEMA = 26; // 慢速EMA的期間
int signalSMA = 9; // 信號線的期間
ArraySetAsSeries(macdLine, true);
ArraySetAsSeries(signalLine, true);
ArraySetAsSeries(histogram, true);
ArrayResize(macdLine, Bars);
ArrayResize(signalLine, Bars);
ArrayResize(histogram, Bars);
for(int i = 0; i < Bars; i++)
{
macdLine[i] = iMACD(Symbol(), 0, fastEMA, slowEMA, signalSMA, PRICE_CLOSE, i, i);
signalLine[i] = iSignal(Symbol(), 0, fastEMA, slowEMA, signalSMA, PRICE_CLOSE, i, i);
histogram[i] = macdLine[i] - signalLine[i];
}
用於分析市場的超買和超賣情況,以預測價格反轉。它的值介於0到100之間,通常80以上表示超買,20以下表示超賣。隨機指標基於過去一段時間內的價格範圍,用於識別市場的變化和可能的轉折點。
double K[];
double D[];
int period = 14; // 隨機指標的期間
ArraySetAsSeries(K, true);
ArraySetAsSeries(D, true);
ArrayResize(K, Bars);
ArrayResize(D, Bars);
for(int i = 0; i < Bars; i++)
{
K[i] = iStochastic(Symbol(), 0, period, 3, 3, MODE_SMA, 0, MODE_SMA, i);
D[i] = iMAOnArray(K, 0, 3, MODE_SMA, i);
}